package com.project.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * @Description: 配置Swagger文件里的内容
 * @Author: zhangqingbiao
 * @Date: 2021/3/30 21:15
 */

@Configuration  // 引入配置文件注解，代表该类是springboot的配置
@EnableSwagger2
public class SwaggerConfig {

    //    配置swagger里的一些信息
    @Bean
    public Docket api() {
     /*   return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .pathMapping("/")
                .select() // 选择那些路径和api会生成document
//                .apis(RequestHandlerSelectors.any())// 对所有api进行监控
                .apis(RequestHandlerSelectors.basePackage("com.project"))  // 只监控 com.project包下的所有文件
                //不显示错误的接口地址
                .paths(Predicates.not(PathSelectors.regex("/error.*")))//错误路径不监控  过滤错误的信息
//                .paths(PathSelectors.regex("/.*"))// 对根下所有路径进行监控
                .build();*/

        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())//调用apiInfo方法,创建一个ApiInfo实例,里面是展示在文档页面信息内容
                .select()
                //控制暴露出去的路径下的实例
                //如果某个接口不想暴露,可以使用以下注解
                //@ApiIgnore 这样,该接口就不会暴露在 swagger2 的页面下
                .apis(RequestHandlerSelectors.basePackage("com.project"))
                .paths(PathSelectors.any())
                .build();
    }

    //  创建构造方法
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title("用户管理系统接口文档")
//                .contact(new Contact("remove", "", "xxx"))
                .description("这个仅仅是个人项目里的接口文档")

//                .termsOfServiceUrl("No terms of service")
//                .license("The Apache Licens ,Version 2.0")
//                .licenseUrl("Http://www.apache.org/license/License-2.0.html")
                .build();
    }

}
